// 深拷贝方式1：利用json
function deepCopy1(obj) {
    const jsonStr = JSON.stringify(obj);
    return JSON.parse(jsonStr);
}

// 自己遍历对象
function deepCopy2(data) {
    if (typeof data === 'object') {
        if (data instanceof Array) {
            let arr = []
            // 数组类型
            for (let item of data) {
                // 执行一次deepCopy()，若item是简单数据类型，则添加至arr数组中
                arr.push(deepCopy2(item))  
            }
            return arr //将data是数组类型的结果进行返回
        } else {
            // 对象类型
            let obj = {}
            for (let key in data) { 
                // 重点：使用字符串的方式访问对象属性
                obj[key] = deepCopy2(data[key]) //data[value]获取到键的值
            }
            return obj
        }
    } else {
        // 返回简单数据类型 
        return data
    }
}

const obj = {
    name: "Hydra",
    age: 35,
    friend: {
        name: "wk",
        age: 18,
        friend: {
            name: "tww",
            age: 19
        }
    }
}

const obj2 = deepCopy2(obj);
console.log(obj2);

